package com.modifiertech.lineage;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class BaseConst {
    public static final String MODID = "lineage";
    public static final String MODNAME = "lineage";
    public static final String MODVERSION = "1.0";

    public static final String PROXY_COMMON = "com.modifiertech.lineage.base.CommonProxy";
    public static final String PROXY_CLIENT = "com.modifiertech.lineage.client.ClientProxy";
    public static final String GUI_FACTORY = "com.modifiertech.lineage.client.gui.GuiFactory";

    //playerDataTag========================
    public static final String PLAYER_ROOT_TAG="LineageData";
    public static final String PLAYER_BASE_TAGNAME="TagName";
    public static final String PLAYER_BASE_ENABLE="Enable";
    public static final String PLAYER_BASE_COOLDOWN="CoolDown";

    public static final String PLAYER_BASE_TAGVALUE="TagValue";
    public static final String PLAYER_BASE_TAGDUARITION="TagDurarition";
    public static final String PLAYER_BASE_TAG_TEMP ="TemporaryTag";
    public static final String PLAYER_BASE_TAG_PRESIS ="PersistentTag";
    public static final String PLAYER_ADV_TAG__ATTR="Attributes";



    /**属性类型枚举
     *
     */
    public static enum Attr{
        Strength("力量属性"),
        Agile("敏捷属性"),
        Physique("体质属性"),
        Intelligence("智力属性"),
        UnDistribute("未分配属性",false),
        ;
        public static final List<Attr> list= Arrays.stream(values()).collect(Collectors.toList());

        private String desc;
        private boolean playerAttr=true;


        Attr(String desc) {
            this.desc = desc;
        }
        Attr(String desc,boolean playerAttr) {
            this.desc = desc;
            this.playerAttr=playerAttr;
        }

        public boolean isPlayerAttr() {
            return playerAttr;
        }
    }

    /**属性操作类型枚举
     *
     */
    public static enum AttrOperate{
        add("添加属性点"),
        sub("减少属性点"),
        clear("清除属性点");
        public static final List<AttrOperate> list= Arrays.stream(values()).collect(Collectors.toList());
        private String desc;

        AttrOperate(String desc) {
            this.desc = desc;
        }
    }


    public static enum LevelOperate{
        ADD("add","添加等级"),
//        SUB("sub","减少等级"),
//        INIT("init","初始化等级")
        ;
        public static final List<LevelOperate> list= Arrays.stream(values()).collect(Collectors.toList());
        private String name;
        private String desc;

        LevelOperate(String name, String desc) {
            this.name = name;
            this.desc = desc;
        }

        public String getName() {
            return name;
        }

        public String getDesc() {
            return desc;
        }
    }

    /**技能操作类型枚举
     * 
     */
    public static enum SkillOperate{
        up("升级技能"),
        bind_shortCut("绑定快捷键"),
        resetAll("重置所有技能"),
        reset("重置技能");
        private String desc;

        SkillOperate(String desc) {
            this.desc = desc;
        }

        public String getDesc() {
            return desc;
        }
    }





    public static final String PLAYER_ADV_TAG__SKILLS="Skills";
    public static final String PLAYER_ADV_TAG__SKILLS_LEARN="learn";
    public static final String PLAYER_ADV_TAG__SKILLS_FORGET="forget";
    public static final String PLAYER_ADV_TAG__SKILLS_FORGET_ALL="forget-all";
    public static final String PLAYER_ADV_TAG__SKILLS_TOGGLE="toggle";

    public static final String PLAYER_ADV_TAG__SKILL_LVL="SkillLevel";
    public static final String PLAYER_ADV_TAG__SKILL_NAME="SkillName";
    public static final String PLAYER_ADV_TAG__SKILL_TYPE="SkillType";
    public static final String PLAYER_ADV_TAG__SKILLS_ORD="OrdinarySkills";
    public static final String PLAYER_ADV_TAG__SKILLS_SPE="SpecialSkills";
    public static final String PLAYER_ADV_TAG__SKILLS_SHORTCUT ="SkillShortCut";
    //技能类型：触发，单次进行触发
    public static final String PLAYER_ADV_SEC_TAG__SKILLS_ONCE ="Once";

    //技能类型：触发，单次进行持有, 右键交互进行发出
    public static final String PLAYER_ADV_SEC_TAG__SKILLS_ONCTWO ="OneTwo";

    //技能类型：激活，激活后持续产生效果与消耗
    public static final String PLAYER_ADV_SEC_TAG__SKILLS_ACTIVE ="Active";
    //技能类型：被动
    public static final String PLAYER_ADV_SEC_TAG__SKILLS_STATE ="State";


    public static final String PLAYER_ADV_TAG__SKILLS_POINT="SkillPoint";
    public static final String PLAYER_ADV_TAG__SKILLS_POINT_TOTAL="TotalSkillPoint";
    public static final String PLAYER_ADV_TAG__SKILLS_POINT_UNDISTRIBUTE="UndistributeSkillPoint";




    public static final String PLAYER_ADV_TAG__ROLE="RoleTags";
    public static final String PLAYER_ADV_TAG__ROLE_BATTLEROLETAGS="BattleRoleTags";
    public static final String PLAYER_ADV_TAG__ROLE_ORDINGNARYROLETAGS="OrdinaryRoleTags";
    public static final String PLAYER_ADV_TAG_POSITIVETAG="PositiveTag";

    public static final String PLAYER_ADV_TAG_NEGATIVETAG="NegativeTag";
    public static final String PLAYER_ADV_TAG_TITLETAGS="TitleTags";
    public static final String PLAYER_ADV_TAG_LVLTAG="LevelTag";
    public static final String PLAYER_ADV_TAG_LVLTAG_LEVEL="CurrentLevel";
    public static final String PLAYER_ADV_TAG_LVLTAG_EXP="CurrentExp";
    public static final String PLAYER_ADV_TAG_LVLTAG_EXP_MAX="CurrentMaxExp";
    public static final String PLAYER_ADV_TAG_MANATAG="ManaTag";
    public static final String PLAYER_ADV_TAG_MANATAG_MODIFIER="ManaModifier";
    public static final String PLAYER_ADV_TAG_MANATAG_CURRENTMANA="CurrentMana";
    public static final String PLAYER_ADV_TAG_MANATAG_MAXMANA="MaxMana";
    public static final String PLAYER_ADV_TAG_MANATAG_MANARECOVER="ManaRecover";













    //cmds===============================
    public static final String CMD_USEAGE="lineage.command.usage";

}
